#ifndef HPLCSPARKLINKAUTOSAMPLERDEVICESENDPACKET_H
#define HPLCSPARKLINKAUTOSAMPLERDEVICESENDPACKET_H

#include "basesendpacket.h"

namespace hplc
{
namespace sparklink
{

class HplcSparkLinkAutoSamplerProtocolData;
class HplcSparkLinkAutoSamplerDeviceSendPacket : public BaseSendPacket
{
public:
    HplcSparkLinkAutoSamplerDeviceSendPacket(HplcSparkLinkAutoSamplerProtocolData &data, QObject *parent = nullptr);
    virtual ~HplcSparkLinkAutoSamplerDeviceSendPacket() override;

    // 100
    void P_analysisTime(quint8 hour, quint8 minute, quint8 second);

    // 107
    void P_loopVolume(quint16 volume);

    // 如果plateNumber == 3, 则columnNumber必须为0
    // 108
    void P_firstSamplePosition(quint8 plateNumber, quint8 columnNumber, quint8 rowNumber);
    // 109
    void P_lastSamplePosition(quint8 plateNumber, quint8 columnNumber, quint8 rowNumber);

    // 111
    void P_flushVolume(quint16 volume);

    // 112
    void P_numberOfInjectionsOrSample(quint8 number);

    // 124
    void P_injectionMode(quint8 mode);

    // 125
    void P_syringeVolume(quint16 volume);

    // 126
    void P_tubingVolume(quint16 volume);

    // 128
    void P_firstTransportVial(quint8 plateNumber, quint16 number);
    // 129
    void P_lastTransportVial(quint8 plateNumber, quint16 number);

    // 130
    void P_sampleNeedleHeight(quint8 level);

    // 131
    void P_syringeSpeed(quint8 level);

    // 132
    void P_syringeSpeedScaleFactor(quint8 factor);

    // 134
    void P_bufferVolume(quint16 volume);

    // 150
    void P_actualSampleNumber(quint8 plateNumber, quint8 columnNumber, quint8 rowNumber);

    // 152
    void P_status(quint8 isError, quint16 status);

    // 155
    void P_errorCode(quint16 errorCode);

    // 192
    void P_airSegment(quint8 isUsed);

    // 193
    void P_skipMissingSamplePosition(quint8 flag);

    // 194
    void P_headSpacePressure(quint8 flag);

    // 195
    void P_resetOutputAfterSerials(quint8 flag);

    // 198
    void P_usePrepMode(quint8 flag);

    // 200
    void P_traySegmentSettings(quint8 leftTrayType, quint8 rightTrayType,
                               quint8 leftType, quint8 rightType);
    void P_traySegmentSettings_SinglePlate(quint8 type);

    // 208
    void P_syncCondition(quint8 syncWithNextInjection, quint8 syncWithLoad,
                         quint8 syncWithInject, quint8 syncWithValveWash);

    // 210
    void P_injectionVolume(quint16 volume);

    // 500
    void P_washBetween(quint8 between);

    // 501
    void P_washTimes(quint8 steps, quint8 times);

    // 502
    void P_washSyringeValveSolventPort(quint8 step, quint8 port);

    // 505
    void P_fillTransportPositionTimes(quint8 port, quint8 times);

    // 507
    void P_washVolume(quint8 step, quint16 volume);

    // 540
    void P_useInMethod(quint8 usedTimedEvents, quint8 usedMix);

    // 2509
    void P_serialNumber(quint32 serial);

    // 4005
    void P_clearMixOrUserProg(quint8 flag);

    // 4008
    void P_clearMethod(quint8 flag);

    // 5300
    void P_doorSensor(quint8 isInterrupt);
};

} // sparklink
} // hplc

#endif // HPLCSPARKLINKAUTOSAMPLERDEVICESENDPACKET_H
